package com.atguigu.ssm.service.impl;

import com.atguigu.ssm.entity.Employee;
import com.atguigu.ssm.mapper.EmployeeMapper;
import com.atguigu.ssm.service.api.EmployeeService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class EmployeeServiceImpl implements EmployeeService {

    @Autowired
    private EmployeeMapper employeeMapper;

    @Override
    @Transactional(readOnly = true)
    public List<Employee> getAll() {
        return employeeMapper.selectAll();
    }

    @Override
    public PageInfo<Employee> getPage(Integer pageNo) {

        // 1、系统内部设定 PageSize 的值
        Integer pageSize = 5;

        // 2、设定分页参数，相当于开启分页功能
        // ※这行代码是一个可插拔的功能：需要就加上，不用就去掉。
        // ※实现可插拔效果的底层逻辑是：高内聚、低耦合。
        // 一个功能进行了高度封装，和外界通过一个确定的接口来对接，
        // 和外界其他功能几乎没有耦合，才能够实现可插拔效果。
        PageHelper.startPage(pageNo, pageSize);

        // 3、执行查询
        List<Employee> employeeList = employeeMapper.selectAll();

        // 4、将查询结果封装到 PageInfo 对象并返回
        return new PageInfo<>(employeeList);
    }
}
